package morenoapp.model.enums;

/**
 * Возможные состояния модели, каждое следующее состояние включает в себя
 * предыдущее. Состояния соответствуют последовательным этапам наполнения
 * модели данными от пустой модели до модели готовой для анализа.
 * @author dmitry.mamonov
 */
public enum MorenoModelStage {
    /**
     * Нет модели, редактирование недоступно.
     */
    NO_MODEL,

    /**
     * Создана новая модель, но данные о структуре модели не заполнены или
     * заполнены частично. Модель не готова для заполнения ответов респондентов.
     */
    NEW_MODEL,

    /**
     * Заполнена структура модели - список респондентов, список вопросов, но не
     * заполнены ответы респондентов. Модель не готова для анализа.
     */
    STRUCTURED_MODEL,

    /**
     * Модель заполнена полность и доступна для аналитики.
     */
    COMPLETED_MODEL;

    /**
     * Поскольку каждое следующее состояние включает в себя все предыдущие
     * данный метод даёт возможность проверить, корректна ли модель
     * для требуемого нам состояния либо нет.
     * @param expectedState
     * @return
     */
    public boolean isSubstageOf(MorenoModelStage expectedState){
        return this.ordinal()<=expectedState.ordinal();
    }
}
